package cn.core.sign.service.intf;

import cn.core.sign.eo.Menu;
import cn.core.sign.qo.MenuQO;
import cn.core.sign.vo.MenuVO;
import cn.core.tool.util.CoreTree;
import cn.core.tool.util.Paging;
import cn.core.tool.util.Param;

import java.util.Collection;

/**
 * 菜单 服务接口
 */
public interface IMenuService {

  /**
   * 菜单 >>> 保存
   */
  public Menu save(Menu eo) throws Exception;

  /**
   * 菜单 >>> 批量保存
   */
  public Collection<Menu> saveBatch(Collection<Menu> eos) throws Exception;

  /**
   * 菜单 >>> 修改
   */
  public Menu update(Menu eo) throws Exception;

  /**
   * 菜单 >>> 批量修改
   */
  public Collection<Menu> updateBatch(Collection<Menu> eos) throws Exception;

  /**
   * 菜单 >>> 删除
   */
  public void remove(Menu eo) throws Exception;

  /**
   * 菜单 >>> 批量删除
   */
  public void removeBatch(Collection<Menu> eos) throws Exception;

  /**
   * 菜单 >>> 数据量
   */
  public Long count(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 主键查询
   */
  public Menu pk(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 查询
   */
  public Collection<Menu> query(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 分页
   */
  public Paging<Menu> paging(Param<MenuQO> param) throws Exception;

  /**
   * 菜单 >>> 业务数据量
   */
  public Long countVo(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 业务主键查询
   */
  public MenuVO pkVo(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 业务查询
   */
  public Collection<MenuVO> queryVo(MenuQO qo) throws Exception;

  /**
   * 菜单 >>> 业务分页
   */
  public Paging<MenuVO> pagingVo(Param<MenuQO> param) throws Exception;

  /**
   * 登录端 >>> 菜单树
   */
  public CoreTree<?> getMenuTreeDataByLoginSide(MenuQO qo) throws Exception;

}
